from langchain_core.prompts import PromptTemplate, ChatPromptTemplate, SystemMessagePromptTemplate, \
    AIMessagePromptTemplate, HumanMessagePromptTemplate
from langchain_core.messages import HumanMessage, AIMessage, SystemMessage


## 普通消息模板
def promptTemplate():
    prompt = PromptTemplate.from_template("翻译内容 {text} 成英文")
    txt = prompt.format(text="你好")
    print(txt)


## 聊天消息模板
def chatPromptTemplate():
    prompt = ChatPromptTemplate.from_messages(
        # messages 不推荐使用此方式 建议使用下边的方式⬇️
        # human 等于 user ai 等于 assistant system是系统预设一般只有一个
        # [
        #     (
        #         "system", "你是一个聪明的AI智能助手"
        #     ),
        #     (
        #         "user", "帮我计算 {text} 的结果"
        #     ),
        #     (
        #         "assistant", "计算结果 1+1 = 2"
        #     )
        # ]
        # [
        #     SystemMessage(content="你是一个聪明的AI智能助手"),
        #     HumanMessage(content="帮我计算 {text} 的结果"),
        #     AIMessage(content="计算结果 1+1 = 2"),
        # ]
        [
            SystemMessagePromptTemplate.from_template("你是一个聪明的AI智能助手{text}"),
            HumanMessagePromptTemplate.from_template("帮我计算 {text} 的结果"),
            AIMessagePromptTemplate.from_template("计算结果 1+1 = 2")
        ]
    )
    ## prompt.input_variables #返回模板中需要的变量名注意这应该是一个属性，直接返回数组["text"]
    # print(prompt.input_variables)
    # prompt.from_template("你是一个聪明的AI智能助手 帮我计算{text}等于几") #创建一个纯文本模板
    ## prompt.format(**kwargs) #格式化模板，插入变量，返回完整字符串
    # prompt.format(text="人工智能正在改变世界。")
    # prompt.partial(text="1+2")  #预先填入部分变量，返回一个新的模板。
    # prompt.format_messages([])    #预先填入部分变量，返回一个新的模板。

    # print(prompt.input_variables)
    # txt = prompt.format(text="1+1")
    txt = prompt.format_messages(text="1+1")
    print(txt)


chatPromptTemplate()
